home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCMania 64
/
PCMania CD64_1.iso
/
pcmania
/
demo64
/
water.pas
< prev
Wrap
Pascal/Delphi Source File
|
1997-12-22
|
3KB
|
93 lines
{ HEY! PcManíacos: }
{ Si queréis contactar con los autores de esta sección, }
{ ahora podéis hacerlo a través de sus e-mails privados: }
{ Miquel Barceló: (Demoscene) }
{ e-mail: sa281@blues.uab.es }
{ Eduard Sánchez Palazón (Curso de ficheros musicales/Demoscene) }
{ e-mail: eduard@ergos.es }
{ Esperamos vuestros mensajes! }
{ -------------------------------------------------------------- }
{ Efectos Recursivos / water.pas }
{ Por Miquel Barceló }
{ -------------------------------------------------------------- }
uses crt,graf;
procedure Prepara_Paleta;
var
cont : integer;
r,g,b : byte;
begin
for cont:=0 to 125 do
putrgb(cont,30*cont div 125,35*cont div 125,50*cont div 125);
for cont:=126 to 255 do
putrgb(cont,30+33*(cont-125) div 130,35+28*(cont-125) div 130,50+13*(cont-125) div 130);
end;
procedure Agua (desde,hasta : pointer);
var
cont : word;
s1,o1,s2,o2 : word;
temp : integer;
begin
s1:=seg(desde^);
o1:=ofs(desde^);
s2:=seg(hasta^);
o2:=ofs(hasta^);
for cont:=320 to 63680 do
begin
temp:=mem[s1:o1+cont-320]+
mem[s1:o1+cont-1]+
mem[s1:o1+cont+1]+
mem[s1:o1+cont+320]
-512;
temp:=temp shr 1 - mem[s2:o2+cont]+128;
mem[s2:o2+cont]:=128+temp-temp shr 7;
end;
end;
var
pant :array [0..1] of pointer;
c :integer;
cnt : integer;
begin
getmem(pant[0],64000);
getmem(pant[1],64000);
cls(128,pant[0]^);
cls(128,pant[1]^);
Set_Vga;
Prepara_Paleta;
c:=0;
repeat
Agua(pant[c],pant[c xor 1]);
c:=c xor 1;
flip(pant[c]^,vga^);
mem[seg(pant[c]^):ofs(pant[c]^)+320+random(63360)]:=255;
mem[seg(pant[c]^):ofs(pant[c]^)+320+random(63360)]:=255;
mem[seg(pant[c]^):ofs(pant[c]^)+320+random(63360)]:=255;
until keypressed;
readkey;
repeat
Agua(pant[c],pant[c xor 1]);
c:=c xor 1;
flip(pant[c]^,vga^);
mem[seg(pant[c]^):ofs(pant[c]^)+32160+round(80*sin(cnt/15))+320*round(80*sin(cnt/21))]:=250;
cnt:=cnt+1;
until keypressed;
readkey;
repeat
Agua(pant[c],pant[c xor 1]);
c:=c xor 1;
flip(pant[c]^,vga^);
until keypressed;
Set_Text;
freemem(pant[0],64000);
freemem(pant[1],64000);
end.